iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 8
1

1. 什麼是ISP 介面隔離原則

  • 不要依賴你不需要的東西,避免因為變動你沒用到的東西,而莫名的發生錯誤

2. 違反會有什麼風險呢?

  • 因為依賴了整個類別,連帶依賴自己根本沒用到的方法,使得受到連帶影響

    假設有個Employee類別,其中有 PayCalculator 計算薪資方法 由財務角色使用、HourReporter 計算工作時數的方法由人資計算使用、leaveCounter 休假計算方法由主管使用,每個角色都使用了Employee類別的一個方法,同時也依賴了其他兩個沒用到的方法,若有天這些沒用到的方法有了變動且發生錯誤,就算使用者沒使用到,也會連帶受到影響

    這裡與朋友討論的結論,其實根本上一開始就是需要盡量網SRP去做拆分,因為他們是為不同角色服務,不過這是理想情況,如果真的拆分徹底,其實每個使用者都不會用到自己不需要的東西,不過有時候我們還是會把多個替不同角色服務方法,塞在同一個類別中,這時候可以採取方法二,在使用者和類別中建立介面,將依賴給分隔開來,使用者只需要依賴介面來實作自己需要的方法就好,這個原則實作時機,將會是功能開發到成熟了,就可以根據角色開始拆分類別了

3. 解決辦法是什麼?

  • 盡量遵守SRP,確保使用者依賴的類別,都是使用者會用到且必要的
  • 其次可以透過在使用者和類別中建立介面,限制使用者依賴介面中指定的方法

上一篇
D07 CH9 | LSP 替換原則
下一篇
D05 CH7 | SRP 單一職責原則
系列文
30天|入門NestJs連載學習筆記26
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
swingcloud
iT邦新手 5 級 ‧ 2020-09-21 22:56:37

所以其實算是 SRP 的另外一種解釋嗎?

我要留言

立即登入留言